package com.example.utils;

import java.util.Arrays;

public class ClassUtils {

    public static ClassLoader getClassLoader(Class<?> classZ){
        if(classZ == null){
            return Thread.currentThread().getContextClassLoader();
        }
        return classZ.getClassLoader();
    }

    public static Object newInstance(Class<?> classZ){
        AssertUtils.isTrue(classZ.getConstructors().length > 0,"Class" + classZ.getSimpleName() + "has no constructor");
        boolean anyMatch = Arrays.stream(classZ.getConstructors()).anyMatch(item -> item.getParameterCount() == 0);
        AssertUtils.isTrue(anyMatch,"Class " + classZ.getSimpleName() + "no parameterless construction method");
        try{
            return classZ.newInstance();
        }catch (Exception e){
        }
        return null;
    }


}
